【SQL初級編6】UNIONを使ってSQL文同士を結合させよう | 您所在的位置:网站首页 › sql union join › 【SQL初級編6】UNIONを使ってSQL文同士を結合させよう |
本記事では、UNIONについて解説します。 前回はサブクエリについて解説しました。 今回では、UNIONで複数のSQL文を繋げる方法についてみていきましょう。 SQLのUNIONとは?SQLのUNIONの使い方UNIONで検索結果を統合するUNION ALLで検索結果を統合するINTERSECTで和集合を取得する(MySQL不可)EXCEPTで差集合を取得する(MySQL不可)まとめ SQLのUNIONとは?UNIONとは、2つのSQL文をつなぐことができるもののことです。 UNIONを使うことで、複数のSQL文の処理結果を合わせて表示することができるようになります。 また、UNIONの他にUNION ALLというものもあります。 UNIONは処理結果から重複したものを除外するのに対し、UNION ALLは重複したものはそのまま表示します。 SQLのUNIONの使い方UNIONの具体的な使い方についてみていきましょう。 次の項目に従って解説していきます。 UNIONで検索結果を統合するUNION ALLで検索結果を統合するなお、今回は『SQL入門編1』で作成したテーブルを使って解説します。『SQL入門編1』で演習用のテーブルを作っていない方は、【SQL入門編1】初心者必見!SQLのクエリの書き方を学ぼうを読んで予め作成してくださいね。 UNIONで検索結果を統合するUNIONで検索結果を統合するやり方を解説します。 まずUNIONで統合する前のSQL文をみていきます。 ○コード例 SELECT name FROM TEST.Student WHERE name = "佐藤";○実行結果 ○コード例 SELECT name FROM TEST.Student WHERE name = "鈴木";○実行結果 こちら2つのSQL文はnameが「佐藤」のもの、「鈴木」のもののレコードをそれぞれ取得しています。 こちら2つのSQL文を、UNIONで統合してみます。 ○コード例 SELECT name FROM TEST.Student WHERE name = "佐藤" UNION SELECT name FROM TEST.Student WHERE name = "鈴木";○実行結果 2つのSQLの実行結果が合わさって表示されました。 このようにUNIONは2つの表を統合して表示してくれるものです。 UNION ALLで検索結果を統合するUNIONの他に、UNION ALLというものもあります。 UNIONと同様2つの表を統合するものですが、UNION ALLの場合重複箇所もそのまま表示します。 ○コード例 SELECT name FROM TEST.Student WHERE age = 9 UNION ALL SELECT name FROM TEST.Student WHERE name = "鈴木";○実行結果 上記のコードは「age=9」のレコードと「name=”鈴木”」のレコードをそれぞれ取得し、UNION ALLにて表示しています。 ただ実行結果をみて分かる通り、重複してそのまま表示していますね。 このようにUNION ALLは重複する箇所もそのまま表示するのが特徴です。 UNIONとUNION ALLは状況に応じて使い分けるようにしましょう。 INTERSECTで和集合を取得する(MySQL不可)UNIONとUNION ALL以外にも、SQL文同士を結合させられるものはあります。 INTERSECTを使うことで、それぞれの実行結果の和集合を取得することが可能です。 和集合とは、2つの重複している箇所、のことを言います。 INTERSECTの具体的な使い方をみていきましょう。 ○コード例(SQliteによる実行) SELECT name FROM Student WHERE gender = "女" INTERSECT SELECT name FROM Student WHERE id = 3;○実行結果 上記のコードは「gender=”女”」に該当するものと「id=3」に該当するものの、和集合を取得しています。 このようにINTERSECTを使うことで、2つのSQL文の実行結果の中で、重複するものだけ取り出せます。 ただし、INTERSECTは残念ながらMySQLではサポート対象外となっており、使うことができません。 EXCEPTで差集合を取得する(MySQL不可)つづいて、EXCEPTをみていきます。 EXCEPTを使うことで、それぞれの実行結果の差集合を取得することが可能です。 差集合とは、Aに含まれるがBに含まれない箇所、のことを言います。 EXCEPTの具体的な使い方をみていきましょう。 ○コード例(SQliteによる実行) SELECT name FROM Student WHERE gender = "女" EXCEPT SELECT name FROM Student WHERE id = 3;○実行結果 上記のコードは「gender=”女”」に該当するものと「id=3」に該当するものの、差集合を取得しています。 「gender=”女”」に該当するものをA、「id=3」に該当するものをBとして考え、Aに該当するが、Bに該当しないものだけ表示しています。 このように、EXCEPTを使うことで、差集合を取得することが可能です。 EXCEPTもINTERSECT同様、MySQLなど一部のRDBMSでは使用できないので、注意しましょう。 まとめ本記事では、UNIONついて解説しました。 UNIONによって複数のSQL文を繋げられることが、お分かり頂けたかと思います。 UNION以外にも、INTERSECTやEXCEPTなどを使うことで、和集合や差集合が取得可能です。 ただし、INTERSECTやEXCEPTはMySQLではサポートされていないので注意しましょう。 次回は、INNER JOINを解説していきます。 SQL入門・学習コンテンツ一覧CANITのSQL学習ページをまとめたページです。ブックマークに登録しておくと便利です。www.canit.jp2022.09.09 ❤内容は役に立ちましたか?皆さまのご意見が励みになります☺YesNo |
CopyRight 2018-2019 实验室设备网 版权所有 |